聽說原生SQLite需要匯入.h
與相容OC的程式碼
看起來是相當麻煩啊
在網路上看見別人推薦使用
第三方SQLite.swift
就決定來試試看
那就開始囉
在iOS下 會在Document文件夾下創立一個Chuhuo.sqlite的資料庫
並且要求連接資料庫
let path = NSSearchPathForDirectoriesInDomains(.documentDirectory, .userDomainMask, true)[0]
let db = try? Connection("\(path)/Chuhuo.sqlite")
然後創立一些Table name
這裡使用stock直接當作名稱
let users = Table("stock")
設立一些Table欄位的資料格式
除了id以外 目前先暫時用String下去做測試
let id = Expression<Int64>("id")
let price = Expression<String>("price")
let product = Expression<String>("product")
let date = Expression<String>("date")
let amount = Expression<String>("amount")
這裡就是要創立Table重頭戲了
造上面設定的下去新增欄位
除了id必須設定流水號
以確保資料庫以後管理方便
try! db?.run(users.create(ifNotExists: true, block: { (table) in
table.column(id, primaryKey: true)
table.column(price)
table.column(product)
table.column(date)
table.column(amount)
}))
等同於SQL
CREATE TABLE IF NOT EXISTS "stock" (
"id" INTEGER PRIMARY KEY NOT NULL,
"price" TEXT,
"product" TEXT,
"date" TEXT,
"amount" TEXT,
)
新增資料
do {
let rowid = try db?.run(users.insert(price <- "100", product <- "car", date <- "2018/10/10", amount <- "1"))
print("inserted id: \(rowid!)")
} catch {
print("insertion failed: \(error)")
}
等同於SQL
INSERT INTO stock (price,product,date,amount) values('100','car','2018/10/10','0')
查詢
for user in (try? db?.prepare(users))!! {
print("id: \(user[id]), price: \(user[price]), email: \(user[product])")
}
等同於SQL
SELECT * FROM stock
更新
let alice = users.filter(id == 5)
try? db?.run(alice.update(price <- "130"))
等同於SQL
update stock set price = 130 where id == 5
刪除
let alice = users.filter(id == 5)
try? db?.run(alice.delete())
等同於SQL
delete from stock where id = 5
差不多是這樣了
基本上所有都測試過可以作動才PO